package acwing_01;

import java.io.*;
import java.util.*;
public class _799_双指针_最长连续不重复子序列 {
	// 除此解法外 还可考虑HashMap
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	static StringTokenizer st;
	static int N = 100100;
	static int n;
	static int a[] = new int[N];
	static int s[] = new int[N];
	static int max = 0;
	public static void main(String[] args) throws IOException{
		
		n = Integer.parseInt(br.readLine());
		st = new StringTokenizer(br.readLine());
		for(int i = 0; i < n; i++) {
			a[i] = Integer.parseInt(st.nextToken());
		}
		
		for(int i = 0,j = 0; i < n; i++) {
			// 把当前值s的下标+1
			s[a[i]]++;
			// 当前值s的下标>1说明该数值在j-i的区间内重复出现
			while(s[a[i]] > 1) {
				// j-i的范围的s下标值之前都被+1了，这里从j开始-1，不断-1，直到j=1时，s[a[i]]就 !>1 了
				s[a[j]]--;
				j++;
			}
			// 存储最大区间
			// 在进入while的前一次循环 是没进入while的，此时就是最大区间
			// 在进入while后，得到的值是小于max的，所以不会存入max
			max = Math.max(max, i - j + 1);
		}
		
		System.out.print(max);
		br.close();
		
	}
}
